/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.uniceub.fsw.talentos.facade;

import br.uniceub.fsw.talentos.dao.TipoOcorrenciaDAO;
import br.uniceub.fsw.talentos.dao.TalentoDAO;
import br.uniceub.fsw.talentos.dao.TalentoOcorrenciaDAO;
import br.uniceub.fsw.talentos.vo.TalentoOcorrenciaVO;
import br.uniceub.fsw.talentos.vo.TipoOcorrenciaVO;
import br.uniceub.fsw.talentos.vo.TalentoVO;
import br.uniceub.fsw.util.TabelaHtml;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Lucas
 */
public class TalentoOcorrenciaFacade {

     /**
     * Mensagem de retorno do sistema.
     */
    private String message;
    private TalentoOcorrenciaVO talentoOcorrencia;
    private TalentoVO talento;
    private TalentoDAO talentoDAO;
    private TalentoOcorrenciaDAO talentoOcorrenciaDAO;

    public TalentoOcorrenciaVO getTalentoOcorrencia(){
        return this.talentoOcorrencia;
    }

    public TabelaHtml consultarTalento(HttpServletRequest req, HttpServletResponse resp) {
        String nome = req.getParameter("noTalento");

        if(nome != null && !nome.equals("")) {
            TabelaHtml tabela = new TabelaHtml();

            tabela.setCampoRetorno("idTalento");

            tabela.adicionarTitulo("Id");
            tabela.adicionarTamanho(0);
            tabela.adicionarTipo("Integer");
            tabela.adicionarStatus(false);

            tabela.adicionarTitulo("Nome");
            tabela.adicionarTamanho(80);
            tabela.adicionarTipo("String");
            tabela.adicionarStatus(true);

            tabela.gravarCampos();

            TalentoVO exemplo = new TalentoVO();

            exemplo.setNoTalento(nome);

            // Lista de talentos
            List<TalentoVO> listaTalento = talentoDAO.consultarPorExemplo(exemplo);

            // Adiciona os valores de cada talento nas listas de ids e nomes
            for(int i = 0; i < listaTalento.size(); i++) {
                tabela.adicionarRegistro(converterVoParaString(listaTalento.get(i)));
            }

             return tabela;
            }
        return null;
    }

    /**
     * Transforma os campos de um VO em uma lista de Strings
     *
     * @return lista de strings com os valores em ordem
     */
    public List<String> converterVoParaString(TalentoVO talento) {
        List<String> valores = new ArrayList<String>();

        valores.add(talento.getIdTalento().toString());
        valores.add(talento.getNoTalento());
        valores.add(talento.getMtRegistroUniceub().toString());
        valores.add(talento.getNoCidade());
        valores.add(talento.getEdTalento());
        valores.add(talento.getNrCEP());
        valores.add(talento.getNrCPF());
        valores.add(talento.getTlPrincipal());
        valores.add(talento.getTlSecundario());
        valores.add(talento.getSgSexo().toString());
        valores.add(talento.getEeTalento());
        valores.add(talento.getCdGrupoTrabalho().toString());

        return valores;
    }

    public void consultar(HttpServletRequest req, HttpServletResponse resp) {
        String idTalentoTmp = req.getParameter("idTalento");

        Integer idTalento = null;

        if(idTalentoTmp == null || idTalentoTmp.equals("")) {
            return;
        } else {
            idTalento = Integer.parseInt(idTalentoTmp);
        }

        this.talento = talentoDAO.consultarPorId(idTalento);
    }

     /**
     * Responsável por executar a operação selecionada pelo usuário.
     *
     * @param req Requisição web do tipo HTTP.
     * @param resp Resposta da requisição HTTP.
     */
    public void operacao(HttpServletRequest req, HttpServletResponse resp) {
        String oper = req.getParameter("operacao");

        if(oper != null)
        {
            if (oper.equals("consultar")) {
                this.consultar(req, resp);
            }
            if (oper.equals("incluir")) {
//                this.incluir(req, resp);
            }
            if (oper.equals("alterar")) {
//                this.alterar(req, resp);
            }
            if (oper.equals("excluir")) {
//                this.excluir(req, resp);
            }
            if (oper.equals("confirmar")) {
//                this.confirmar(req, resp);
            }
            if (oper.equals("recarregar")) {
//                this.recarregar(req, resp);
            }
            if (oper.equals("definirHabilidade")) {
//                this.definirHabilidade(req, resp);
            }
            if (oper.equals("excluirCapacitacao")) {
//                this.excluirCapacitacao(req, resp);
            }
        }
    }

        /**
     * Getter da mensagem de retorno.
     *
     * @return Mensagem de retorno.
     */
    public String getMessage() {
        String retorno = null;
        if (this.message == null || this.message.equals("")) {
            retorno = "&nbsp";
        } else {
            retorno = this.message;
        }
        return retorno;
    }

        /**
     * Retorna uma lista de tipos de ocorrencia ordenada por nome
     *
     * @return lista com as informações necessárias
     */
    public List<List> consultarTiposOcorrencia() {
        List<List> lista = new ArrayList<List>();

        TipoOcorrenciaDAO tipoOcorrenciaDao = new TipoOcorrenciaDAO();

        List<TipoOcorrenciaVO> tipos = tipoOcorrenciaDao.consultarTiposOrdenadoPorNome();

        for(int i = 0; i < tipos.size(); i++) {
            List<String> registro = new ArrayList<String>();
            registro.add(tipos.get(i).getIdTipoOcorrencia().toString());
            registro.add(tipos.get(i).getNoOcorrencia());

            lista.add(registro);
        }

        return lista;
    }

}
